/*
1,10,100,1000...组成序列1101001000...，求这个序列的第N位是0还是1。
Input
第1行：一个数T，表示后面用作输入测试的数的数量。（1 <= T <= 10000)
第2 - T + 1行：每行1个数N。（1 <= N <= 10^9)
Output
共T行，如果该位是0，输出0，如果该位是1，输出1。
Input示例
3
1
2
3
Output示例
1
1
0
题意分析：三角形数定义：把数1，3，6，10，15，21……这些数量的（石子），都可以排成三角形，像这样的数称为三角形数。
三角形数第n项为：T(n)=n*(n+1)/2;
首先三角形数是1,3,6,10,15,21....那么只要判断n-1是不是三角形数就行，因为如果是的话第n位肯定在一个数的第一位，也就是1的位置，不是就输出0。
判断是否是三角形数，也有一点小技巧，根据等差数列求和公式，i*(i+1)/2==n-1; 令t=(int)sqrt（2.0*(n-1)),只要t*（t+1）==2*（n-1）就是三角形数。
*/
#include <bits/stdc++.h>
#define ll long long
#define PI acos(-1)
#define M(n, m) memset(n, m, sizeof(n));
const int INF = 1e9 + 7;
const int maxn = 1e5;
using namespace std;

int n, t;
int main()
{
    cin >> t;
    while(t --)
    {
        cin >> n;
        if (n == 1)
        {
            cout << n << endl;
            continue;
        }
        // 根据等差数列的公式求出到第n-1位一共有多少个数
        int m = sqrt(2 * (n - 1));
        // 根据三角形的第n项公式求第n-1位是不是三角形数
        if ((m * m + m) == 2 * (n - 1))
            cout << 1 << endl;
        else
            cout << 0 << endl;
    }
    return 0;
}
